import XEUtils from "xe-utils";
/**
 * 格式化数字,截取小数点后num位
 * @param {*} value:需要格式化的数字
 * @param {*} num :保留小数点后几位
 * @returns
 */
export function formatNumber(value, num = 4) {
  if (!value) return "";
  if (XEUtils.isNumber(value) || !isNaN(XEUtils.isFloat(value))) {
    return XEUtils.toFixed(value, num);
  } else {
    const numericValue = toNumber.toNumber(value);
    if (!isNaN(numericValue)) {
      return XEUtils.toFixed(numericValue, num);
    }
  }
}

/**
 * 下载文件
 * @param {*} _link
 * @returns
 */
export const handleLink = (_link) => {
  if (!_link) return;
  window.open(_link, "noopener", "noreferrer");
};

/**
 * 查询条件转化
 * @param {*} data
 * @returns
 */
export function transformData(data) {
  const transformedData = {};
  for (const key in data) {
    const item = data[key];
    if (!item.hasOwnProperty("key")) {
      if (key.endsWith("At") || key.endsWith("Time") || key.endsWith("Date")) {
        if (Array.isArray(item) && item.length >= 2) {
          transformedData[`${key}Start`] = item[0];
          transformedData[`${key}End`] = item[1];
        }
      } else if (Array.isArray(item)) {
        transformedData[key] = item.join(",");
      } else {
        transformedData[key] = item;
      }
    }
  }
  return transformedData;
}

/**
 * url处理
 * @param {*} url
 * @returns
 */
export function getUrlParams(url) {
  // 使用正则表达式从URL中提取问号之后的部分
  const queryString = url.match(/\?(.*)/)[1];
  const params = {};

  // 将查询字符串分割成各个参数
  const pairs = queryString.split("&");

  // 遍历参数对，将它们转换为对象的键值对
  for (let i = 0; i < pairs.length; i++) {
    const pair = pairs[i].split("=");
    params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || "");
  }

  return params;
}

/**
 * 截取inAmount和outAmount后面的币种
 * @param {*} obj
 * @returns
 */
export function convertToObjectArray(obj) {
  let result = {};
  let prefixCurrencyMap = {
    inAmount: "inAmount",
    outAmount: "outAmount",
  };
  for (let key in obj) {
    let currency = null;
    let prefix = null; // 初始化 prefix
    for (let p in prefixCurrencyMap) {
      if (key.startsWith(p)) {
        prefix = p;
        currency = key.replace(p, "");
        break;
      }
    }
    if (!prefix || !currency) continue; // 如果 prefix 或 currency 未定义，跳过本次循环
    currency = key.endsWith("Local") ? "CNY" : currency.toUpperCase();
    let amount = obj[key];
    if (!result[prefix]) {
      result[prefix] = {};
    }
    result[prefix][currency] = amount || 0;
  }

  return result;
}
